home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 301-325 / disk_315 / surf / fasttrig.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  1KB  |  55 lines

  1. #include <math.h>
  2. #include "fasttrig.h"
  3.  
  4. extern char *malloc();
  5.  
  6. float *sintab;
  7. float *costab;
  8.  
  9. static int oldn = -1,
  10.        oldrange = -1,
  11.        oldstart = -1;
  12.  
  13.  
  14. /*
  15.  * return true if could not get memory for trig lookup tables
  16.  */
  17. bool InitFastTrig(angstart, angrange, n)
  18.     int angstart;
  19.     int angrange;
  20.     int n;
  21. {
  22.  
  23.  
  24.     int i;
  25.     float AngleInc;
  26.     float curangle;
  27.  
  28.     if( n == oldn && oldrange == angrange && oldstart == angstart ) {
  29.         return(false);
  30.     }
  31.  
  32.     if( n != oldn ) {
  33.         if( sintab ) free(sintab);
  34.         if( costab ) free(costab);
  35.         sintab = (float *)malloc( n * sizeof( float ));
  36.         costab = (float *)malloc( n * sizeof( float ));
  37.         if( !sintab || !costab ) {
  38.            return(true);
  39.         }
  40.     }
  41.  
  42.     oldn = n;
  43.     oldrange = angrange;
  44.     oldstart = angstart;
  45.  
  46.     AngleInc = (PI*angrange)/(180 *(n-1));
  47.     for( curangle = angstart*PI/180.0, i = 0;
  48.          i< n; i++, curangle += AngleInc ) {
  49.  
  50.         sintab[i] = sin( curangle );
  51.         costab[i] = cos( curangle );
  52.     }
  53.     return(false);
  54. }
  55.